package redis;

import redis.clients.jedis.Jedis;

import java.io.IOException;

/**
 * @Author: 海琳琦
 * @Date: 2022/6/13 21:00
 */
public class JedisDemo2 {
    public static void main(String[] args) throws IOException {
        String uid = "ki11ki";
        String pid = "001";
        doSecKill(uid, pid);
    }

    /**
     * 秒杀过程
     * @param uid
     * @param prodid
     * @return
     * @throws IOException
     */
    public static boolean doSecKill(String uid, String prodid) throws IOException {
        //1、uid和prodid判空
        if (uid == null || prodid == null) {
            return false;
        }
        //2、连接redis
        Jedis jedis = new Jedis("192.168.245.128", 6379);

        //3、拼接key
        //3.1、库存key
        String kcKey = "sk:" + prodid + ":qt";
        //3.2、秒杀成功用户key
        String userkey = "sk:" + prodid + ":user";

        //4、获取库存，如果库存为null，秒杀还没有开始
        String kc = jedis.get(kcKey);
        if (kc == null) {
            System.out.println("秒杀还没有开始，请等待");
            jedis.close();
            return false;
        }

        //5、判断用户是否重复秒杀
        if (jedis.sismember(userkey, uid)) {
            System.out.println("已经秒杀成功，不能重复秒杀");
            jedis.close();
            return false;
        }

        //6、判断如果商品库存数量<1，秒杀结束
        if (Integer.valueOf(kc) <= 0) {
            System.out.println("秒杀失败，库存为不足，秒杀结束");
            jedis.close();
            return false;
        }

        //7、秒杀过程
        //7.1 库存-1
        jedis.decr(kcKey);
        //7.2 将用户添加到秒杀成功的用户清单中
        jedis.sadd(userkey, uid);
        System.out.println("秒杀成功");
        jedis.close();
        return true;
    }
}
